package com.jlnk.androidfmc.view;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Intent;
import android.database.sqlite.SQLiteBlobTooBigException;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;

import com.jlnk.androidfmc.R;
import com.jlnk.androidfmc.adapter.PostAdapter;
import com.jlnk.androidfmc.database.PostDatabase;
import com.jlnk.androidfmc.entity.Post;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class MyNyq extends AppCompatActivity {
    private RecyclerView recyclerView;
    private PostAdapter adapter; // 适配器
    private List<Post> posts; // 帖子列表
    private PostDatabase db; // 数据库实例
    private static final int PAGE_SIZE = 10; // 定义每页帖子数量

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_nyq);

        recyclerView = findViewById(R.id.recyclerView_posts);
        posts = new ArrayList<>();

        db = PostDatabase.getInstance(this); // 获取数据库实例
        // 查询所有帖子


        // 创建适配器并设置到RecyclerView
        adapter = new PostAdapter(posts,db);
        recyclerView.setAdapter(adapter);

        // 设置LayoutManager
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        // 启动 AsyncTask 加载帖子
        new LoadPostsTask().execute(); // 加载帖子数据// 加载第一页的数据


        // 获取返回按钮的实例
        ImageButton btnBack = findViewById(R.id.button_back);
        // 设置返回按钮的点击事件
        btnBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 结束当前Activity，返回上一个Activity
                finish();
            }
        });
    }

    // AsyncTask 加载帖子
    private class LoadPostsTask extends AsyncTask<Void, Void, List<Post>> {
        @Override
        protected List<Post> doInBackground(Void... params) {
            // 获取第一页的数据
            Log.d("LoadPostsTask", " 2");
            try{
                return db.getAllPosts(1, PAGE_SIZE);
            } catch (SQLiteBlobTooBigException e) {
                // 处理异常，例如返回空列表或进行重试
                Log.e("LoadPostsTask", "Error loading posts", e);
                return Collections.emptyList();
            }
        }
        @Override
        protected void onPostExecute(List<Post> posts) {
            // 查询完成后在主线程更新UI
            Log.d("doInBackground executed", "1");
            adapter.setData(posts);
        }


    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        if (intent.getBooleanExtra("REFRESH_POSTS", false)) {
            // 刷新帖子数据
            new LoadPostsTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); // 使用线程池
        }
    }

    @Override
    protected  void onResume(){
        super.onResume();
        loadData();
    }

    private void loadData() {
    }

}


